using System;
using System.Collections.Generic;
using System.ServiceModel;
using Instances.Contracts;

namespace WhsFacebook.Net.Contracts
{

    public class WhsSystemInfo
    {
        public Guid InstanceId;

        public string SystemManufacturer;
        public string SystemModel;
        public string OsVersion;
        public string WhsVersion;
        public int Locale;
        public int TimeZone;
        public long TotalRam;
        public string WhsDomain;
    }

    public class WhsAddinInfo
    {
        public Guid ProductCode;
        public string Author;
        public string Title;
        public string Version;
    }

    public class WhsStorageInfo
    {
        public Guid InstanceId;

        public long AppFoldersSize;
        public long BackupSize;
        public long OperatingSystemSize;
        public long SharedFoldersSize;
        public long SharedFoldersDupSize;
        public long StorageFreeSpace;
        public long StorageSize;
        public long StorageUsedSpace;
    }

    public class WhsDiskInfo
    {
        public Guid DiskId;
        public Guid WhsDiskInfoId;
        public string BusType;
        public long Capacity;
        public long FreeSpace;
        public bool IsExternal;
        public string Location;
        public string DiskModel;
        public string DiskRole;
        public long UsedSpace;
    }

    partial interface IWhsFacebookService
    {
        [OperationContract]
        void UpdateSystemInfo(WhsSystemInfo info);

        [OperationContract]
        void UpdateInstalledAddins(Guid instanceId, IEnumerable<WhsAddinInfo> addins);

        [OperationContract]
        void UpdateStorageInfo(WhsStorageInfo info);

        [OperationContract]
        void UpdateDisks(Guid instanceId, IEnumerable<WhsDiskInfo> disks);

        [OperationContract]
        ReleaseInfo GetLatestVersion(LatestVersionQuery query);

        [OperationContract]
        void ReportError(ErrorInfo error);

    }
}


